package cn.toutatis.common.controllerDepand;

import cn.toutatis.common.config.PagingQuery;
import cn.toutatis.common.result.Result;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

/**
 * @author Toutatis_Gc
 */
public interface BaseController<O> {


    /**
     * @param pagingQuery 分页实体
     * @param obj 判断条件
     * @return 实体List
     */
    Result getList(PagingQuery pagingQuery, O obj);

    /**
     * @param id 前端传入ID
     * @return 根据ID查找该实体
     */
    Result getById(O entity);

    /**
     * @param entity 更新实体的状态
     * @return 更新结果
     */
    Result updateStatus(O entity);

    /**
     * @param entities
     * @return
     */
    Result batchDeleteReal(List<O> entities,String id);

    /**
     * @param entities 逻辑删除
     * @return
     */
    Result tombstone(List<O> entities);

    Result tombstoneOne(O entity);

    Result saveRecord(O entity);

    Result search(JSONObject object);
}
